Generally, distributed service applications are hosted in cloud-computing networks (across various nodes) and are intended primarily to promote high availability through redundancy of service-application components. These service applications are often divided into portions that include a group of service-application components. The use of these portions helps to ensure that an entire service application does not become unavailable during an update or repair to the nodes that host the service application. In operation, as these portions are pulled offline individually, a balance of the portions of the service application are allowed to continue to operate online. Thus, ideally, no lapse in availability of the service application is encountered by a user thereof.
Presently, the division of the service application is based on location-related criteria (e.g., service-application components residing on a common node within a data center) or function-related criteria (e.g., all service-application components that perform a certain role cannot be taken down at once). These criteria for grouping service-application components into portions are somewhat effective for stateless applications (i.e., volatile software that relies upon data stored outside of its components). However, these criteria are not effective for stateful applications that maintain a durable internal state, which is persisted at the service-application components. That is, using the criteria above fails to consider a present internal state of the service-application components, thereby causing potential unavailability of the service application when pulling offline a previously formed portion thereof. Accordingly, technology is introduced herein to address the above-mentioned problem of enabling high availability for distributed service applications that maintain an internal state.